const koa = require("koa");
const app = new koa();
const Router = require("koa-router");
const router = new Router();
const fs = require("fs");
const path = require("path");
const zlib = require("zlib");
const cors = require("@koa/cors");

app.use(cors());
// 提供压缩后的文件下载
router.get("/download", async (ctx) => {
  const filePath = path.join(__dirname, "test.txt"); // 要压缩的文件
  const fileName = "zks.txt.gz"; // 下载的文件名

  ctx.set("Content-Disposition", `attachment; filename=${fileName}`); // 设置下载文件名
  ctx.set("Content-Type", "application/gzip"); // 设置文件类型

  // 读取文件并使用 gzip 进行压缩
  ctx.body = fs.createReadStream(filePath).pipe(zlib.createGzip());
});
app.use(router.routes()).use(router.allowedMethods());
app.listen(3000);

// zlib 主要提供以下方法：
// 压缩

// zlib.gzip() / zlib.gzipSync()：使用 Gzip 进行压缩
// zlib.deflate() / zlib.deflateSync()：使用 Deflate 进行压缩
// zlib.brotliCompress() / zlib.brotliCompressSync()：使用 Brotli 进行压缩（Node.js 10+）
// 解压

// zlib.unzip() / zlib.unzipSync()：解压 Gzip
// zlib.inflate() / zlib.inflateSync()：解压 Deflate
// zlib.brotliDecompress() / zlib.brotliDecompressSync()：解压 Brotli
